/*
============================================================================
 Name        : $(Basename).h
 Author      : $(Author)
 Version     :
 Copyright   : $(Copyright)
 Description : Application header file
============================================================================

Note! Normally you would have a separate file for each of these classes, but
here, for the sake of simplicity, they are all put in the same file. Having
the classes defined in separate files makes the source code easier to maintain.

*/


#ifndef __$(BASENAME)_H__
#define __$(BASENAME)_H__

// INCLUDES
// System includes, found under %EPOCROOT%\epoc32\include
#include <eikapp.h>             // CEikApplication
#include <eikdoc.h>             // CEikDocument
#include <coecntrl.h>           // CCoeControl
#include <uikon.hrh>            // Command codes
#include <eikenv.h>             // CEikonEnv
#include <eiklabel.h>           // CEikLabel
#include <aknappui.h>           // CAknAppUi
#include <aknnotewrappers.h>    // CAknInformationNote

// FORWARD DECLARATIONS
class C$(Basename);
class C$(Basename)Container;

// CLASS DEFINITIONS

//----------------------------------------------------------------------------
// C$(Basename)Application
//----------------------------------------------------------------------------
class C$(Basename)Application : public CEikApplication
{
private: // From CEikApplication
	CApaDocument* CreateDocumentL();

private: // From CApaApplication (via CEikApplication)
	TUid AppDllUid() const;
};

//----------------------------------------------------------------------------
// C$(Basename)Document (Model)
//----------------------------------------------------------------------------
class C$(Basename)Document : public CEikDocument
{
public: // Constructor
	C$(Basename)Document(CEikApplication& aApp);

private: // From CEikDocument
	CEikAppUi* CreateAppUiL();
};

//----------------------------------------------------------------------------
// C$(Basename)AppUi (Controller)
//----------------------------------------------------------------------------
class C$(Basename)AppUi : public CAknAppUi
{
public: // Constructors and destructor
	void ConstructL(void);
	~C$(Basename)AppUi();

private: // From CEikAppUi
	void HandleCommandL(TInt aCommand);

private: // Data
	C$(Basename)Container* iAppContainer;
};

//----------------------------------------------------------------------------
// C$(Basename)Container (View)
//----------------------------------------------------------------------------
class C$(Basename)Container : public CCoeControl, MCoeControlObserver
{
public: // Constructors and destructor
	void ConstructL(const TRect& aRect);
	~C$(Basename)Container();

public: // New functions

public: // From CCoeControl
	void SizeChanged();
	TInt CountComponentControls() const;
	CCoeControl* ComponentControl(TInt aIndex) const;
	void Draw(const TRect& aRect) const;

public: // From MCoeControlObserver
	void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);

private:    // Data
	CEikLabel* iLabel;          // example label
	CEikLabel* iToDoLabel;      // example label
};

#endif  // __$(BASENAME)_H__

